# -*- coding: utf-8 -*-
'''
	 autor: João Rebocho Nº 6035
	 data: 1 de Novembro de 2013
	 obs: 2ª Parte do Trabalho de LP
'''
#imports da classe Estatisticas
import csv
import numpy as np
import matplotlib.pyplot as plt
class Estatisticas:
    def __init__(self, instituicao, nomeinstituicao, colocados, vagasSobrantes, numeroTotalDecolocados):
        '''
        Construtor da classe Estatisticas
        
        self.instituicao - esta variável é um vector e  lá vou guardar os códigos das instituições, valor 
        esse que é passado  por parametro através do parametro istituicao
        
        self.nomeinstituicao - esta variável é um vector e  lá vou guardar os nomes das instituições, valor 
        esse que é passado  por parametro através do parametro nomeistituicao 
        
        self.colocados - esta variável é um vector e  lá vou guardar os alunos colocados por instituição, valor 
        esse que é passado  por parametro através do parametro colocados
        
        self.vagasSobrantes - esta variável é um vector e  lá vou guardar os códigos das vagas sobrantes porinstituições, valor 
        esse que é passado  por parametro através do parametro vagasSobrantes 
        
        self.numeroTotalDecolocados - esta variável é uma variável inteira e lá vou guardar o numero total de instituições, valor 
        esse que é passado  por parametro através do parametro numeroTotalDecolocados
        '''
        self.instituicao= []
        self.nomeinstituicao = []
        self.colocados = []
        self.vagasSobrantes = []
        
        self.numeroTotalDecolocados = numeroTotalDecolocados
        
        #Nas linhas abaixo vou guardar todos os valores nas respectivas variaveis
        self.instituicao.append(instituicao)
        self.nomeinstituicao.append(nomeinstituicao)
        self.colocados.append(colocados)
        self.vagasSobrantes.append(vagasSobrantes)
        
        
        #Chamada das funções que vão fazer as estatisticas
        self.estatisticasInstituicao(self.instituicao, self.nomeinstituicao, self.colocados, self.vagasSobrantes, self.numeroTotalDecolocados)
        
        pass
    
    def estatisticasInstituicao(self, instituicao,  nomeinstituicao, colocados, vagasSobrantes , numeroTotalDecolocados):
        '''
        Neste metodo vou realizar as varias estatisticas das instituições
        colocados1 - variavel onde vou guardar o numero de alunos colocados por instituição
        vagasPorColocar - variavel onde vou guardar o numero de vagas por colocadar por instituição 
        numeroDeColocadosInstituicao - ficheiro onde guardo os valores da estatistica numero de alunos colocados por instituição 
        numeroDeVagasporColocarInstituicao - ficheiro onde guardo os valores da estatistica percentagem de colocados por instituição 
        numeroDeVagasporColocarInstituicao - ficheiro onde guardo os valores da estatistica numero de vagas por colocar por instituição 
        '''
        
        colocados1 = 0
        vagasPorColocar = 0.0
        numeroDeColocadosInstituicao = csv.writer(open("NumeroDeColocados.csv", "wb"))
        percentagemNumeroDeColocados = csv.writer(open("PercentagemNumeroDeColocados.csv", "wb"))
        numeroDeVagasporColocarInstituicao = csv.writer(open("NumeroDeVagas.csv", "wb"))
        for x in range(0, len(instituicao)):
            colocados1 += colocados[x]
            vagasPorColocar += float(vagasSobrantes[x])
            try:
                #Nas linhas abaixo veijo o nome das instituições e por cada instituição e guardo o resultado de cada estatistica no ficheiro respectivo 
                if nomeinstituicao[x + 1] != nomeinstituicao[x]:
                    numeroDeColocadosInstituicao.writerow([colocados1])
                    percentagemNumeroDeColocados.writerow([self.percentagemdeColocados(colocados1, numeroTotalDecolocados)])
                    numeroDeVagasporColocarInstituicao.writerow([vagasPorColocar])
                    print          
                    colocados1 =0 
                    vagasPorColocar = 0.0
            except IndexError:
                return 0
        pass
    def percentagemdeColocados(self, colocados1, numeroTotalDecolocados):
        '''
        Neste método calculo a percentagem de alunos colocados por instituição em relação ao numero total de colocados
        e depois devolvo o valor atraves da varialvel percentagem
        '''
        percentagem = float(colocados1 * 100) / self.numeroTotalDecolocados
        return percentagem
    
    def graficosNumeroColocados(self):
        '''
        Neste método vou ralizar os graficos da estatistica Numero de Colocados numa instituição, para isso
        vou chamar o ficheiro onde está guardada a estatistica e de seguida guardo esses valores no vector
        numeroDeColocadosInstituicao1 e de seguida atraves do mathplotlib faço o grafico
        '''
        numeroDeColocadosInstituicao = open("NumeroDeColocados.csv", "r")
        numeroDeColocadosInstituicao1 = []
        for colocados in numeroDeColocadosInstituicao:
            numeroDeColocadosInstituicao1.append(colocados)
        
        plt.title('Numero de Colocados numa instituicao')
        plt.plot([colocados2 for colocados2 in numeroDeColocadosInstituicao1])
        plt.xlabel('Da instituicao 110 a 7230')
        plt.ylabel('Numero de Colocados')
        plt.show()
        

        pass 
    
    def graficosPercentagemColocados(self):
        '''
        Neste método vou ralizar os graficos da estatistica percentagem de colocados numa instituição, para isso
        vou chamar o ficheiro onde está guardada a estatistica e de seguida guardo esses valores no vector
        percentagemDeColocadosInstituicao e de seguida atraves do mathplotlib faço o grafico
        '''
        percentagemDeColocadosInstituicao = open("PercentagemNumeroDeColocados.csv", "r")
        percentagemDeColocadosInstituicao1 = []
        for colocados in percentagemDeColocadosInstituicao:
            percentagemDeColocadosInstituicao1.append(colocados)
        
        plt.title('Percentagem de Colocados numa instituicao')
        plt.plot([percentagem for percentagem in percentagemDeColocadosInstituicao1])
        plt.xlabel('Da instituicao 110 a 7230')
        plt.ylabel('Percentagem de Colocados %')
        plt.show()
        
        pass
     
    def graficosVagasColocados(self):
        '''
        Neste método vou ralizar os graficos da estatistica Vagas por Colocar numa instituição, para isso
        vou chamar o ficheiro onde está guardada a estatistica e de seguida guardo esses valores no vector
        vagaDeColocadosInstituicao1 e de seguida atraves do mathplotlib faço o grafico
        '''
        vagaDeColocadosInstituicao = open("NumeroDeVagas.csv", "r")
        vagaDeColocadosInstituicao1 = []
  
        for colocados in vagaDeColocadosInstituicao:
            vagaDeColocadosInstituicao1.append(colocados)
        
        plt.title('Numero de Vagas numa instituicao')
        plt.plot([vagas for vagas in vagaDeColocadosInstituicao1])
        plt.xlabel('Da instituicao 110 a 7230')
        plt.ylabel('Numero de Vagas Sobrantes')
        plt.show()
        
        
        pass 
    
    

